package tech.yingchuan.blogs.service.impl;

/**
 * ID生成器服务接口
 * @author YcDr 丁广义
 * @version 1.0
 * @date 2018/2/7
 */
public interface SequenceService {
    /**
     * 序列号自增序列
     */
    String SERIAL_NUMBER = "serial.number:";

    /**
     * 依据两位业务码字符串,生成一个流水号,格式依照:<br/>
     * yyyyMMddHHmmss{bizCode}{5位的自增序列号}
     *
     * @param bizCode
     *            两位,00-99
     * @return 20位的序列号
     * @throws Exception
     */
    String generate(String bizCode);

    //事实上，应该对bizCode做白名单验证,以免恶意伪造
    default boolean isLegal(String bizCode) {
        if (bizCode == null || bizCode.length() != 2) {
            throw new RuntimeException("bizCode: " + bizCode + "异常");
        }

        if (Character.isDigit(bizCode.charAt(0))
                && Character.isDigit(bizCode.charAt(1))){
            return true;
        }
        return false;
    }
}
